#ifndef AVL_H
#define AVL_H
using namespace std;
#include "Arbol.h"
#include "virtual.h"
class AVL : public Arbol<Cliente>
{
    public:
        AVL();
        void Insertar(int clave, int dato1, string dato2);  //licencia nombre
        NodoArbol<Cliente> Buscar();


   private:
        void Insertar(int clave, Cliente c);
        void Insertar(int clave, Cliente c, NodoArbol<Cliente>** raiz, bool *Hh);
        void InsertarBalanceado(int clave, int dato1, string dato2, NodoArbol<Cliente> **raiz, bool Hh);
        void RotacionDobleIzquierda(NodoArbol<Cliente> **n, NodoArbol<Cliente> **n1);
        void RotacionDobleDerecha(NodoArbol<Cliente> **n, NodoArbol<Cliente> ** n1);
        void RotacionSimpleIzquierda(NodoArbol<Cliente> **n, NodoArbol<Cliente> ** n1);
        void RotacionSimpleDerecha(NodoArbol<Cliente> **n, NodoArbol<Cliente> ** n1);
};

#endif // AVL_H
